#Какой код корректно запускает асинхронную функцию main()?
# import asyncio

# asyncio.run(main())

#Какое утверждение верно относительно asyncio.run()?
#Создает и закрывает цикл событий автоматически

#Что произойдет, если в asyncio.run() передать не корутину?
#исключение ValueError

#Что произойдет при вложенном вызове asyncio.run() внутри другой асинхронной функции?
#Будет брошено исключение RuntimeError

#Можно ли использовать asyncio.run() в многопоточном приложении?
#Да, но в каждом потоке может быть не более одного своего собственного цикла событий

#Как asyncio.run() влияет на незавершенные асинхронные задачи при завершении основной корутины?
#Отменяет все незавершенные задачи
import asyncio

# Пример данных
log_events = [
    {"event": "Запрос на вход", "delay": 0.5},
    {"event": "Запрос данных пользователя", "delay": 1.0},
    {"event": "Обновление данных пользователя", "delay": 1.5},
    {"event": "Обновление конфигурации сервера", "delay": 5.0}
    ]

async def fetch_log(event: dict) -> str:
    await asyncio.sleep(event['delay'])
    return f"Событие: {repr(event['event'])} обработано с задержкой {event['delay']} сек."

async def main():
    tasks = [asyncio.create_task(fetch_log(event)) for event in log_events]
    results = await asyncio.gather(*tasks)
    for result in results:
        print(result)
asyncio.run(main())